package TreeSet.projeect;

import java.util.Comparator;
import java.util.TreeSet;

/*
    TreeSet实现类的使用:
    特点：红黑树（平衡二叉树）存储，没有下标，不可重复
    判断是否重复：
    方法1.同过对象类实现Comparable接口，重写其中的Compareto（）方法来判断元素是否重复,结果返回0，表示重复，并按照红黑树的性质进行排序
    方法2.使用匿名内部类Comparator：自定义比较器
 */
public class PracticeMain {
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>();
        Student s1 = new Student("acg",20);
        Student s2 = new Student("acg",22);
        Student s3 = new Student("hgj",23);
        Student s4 = new Student("xyz",22);
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        treeSet.add(s4);
        System.out.println(treeSet.size());
        System.out.println(treeSet.toString());

        //遍历：增强for，迭代器：Iterator

        //方法2：自定义比较器：
        TreeSet<Preson> tre = new TreeSet<>(new Comparator<Preson>() {   //直接再定义集合时就用匿名对象去创建比较器
            @Override
            public int compare(Preson o1, Preson o2) {
                int c1 = o1.getAge() - o2.getAge();
                int c2 = o1.getName().compareTo(o2.getName());
                return c1 == 0 ? c2:c1;
            }
        });

        Preson p1 = new Preson("acg",23);
        Preson p2 = new Preson("acg",22);
        Preson p3 = new Preson("hgj",23);
        Preson p4 = new Preson("xyz",22);
        tre.add(p1);
        tre.add(p2);
        tre.add(p3);
        tre.add(p4);
        System.out.println(tre.size());
        System.out.println(tre.toString());
    }
}
